﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EGuayas.Web.Resources;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL;
using System.IO;
using System.Text;
using EntGuayasSLA.BL.Licenciamiento;
using EGuayas.Web.Usuario;

namespace EGuayas.Web.Auditoria.Admin.Monitoreo
{
    public partial class pgNuevoExpediente : pgBase
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                   string  ExpedienteIdTmp = Request["exp_id"];
                   string AuditoriaIdTmp = "";
                   
                   SetSessionPage setSession = new SetSessionPage(SessionPage.PageGestionPromoAudMon,Request["evt"]);
                   Expediente expediente = Expediente.GetEditableRoot(Guid.Parse(ExpedienteIdTmp));

                   switch (GetSessionPage.GetSession(SessionPage.PageGestionPromoAudMon))
                   {
                         case Valores.PageEvento_Nuevo:
                             AuditoriaIdTmp = Request["exa_id"];
                            
                            this.txtNombre.Text  = expediente.Nombre;
                            this.txtDescrip.Text = expediente.Descripcion;
                            this.dtFechaInicio.SetValue(DateTime.Now);
                            this.dtFechaInicio.ReadOnly = true;
                            break;
                         case Valores.PageEvento_Modificar:
                            AuditoriaIdTmp = Request["mon_id"];
                            AuditoriaMonitoreo audMon = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));
                            frmAuditoria.SetValues(new {
                                Nombre  = expediente.Nombre,
                                Descrip = expediente.Descripcion,
                                Periodo = audMon.Periodo,
                                FechaInicio = audMon.FechaInicio.ToShortDateString(),
                                FechaFin    = audMon.FechaFin.ToShortDateString()
                            });
                            break;
                         default:
                            btnSave.Disable();
                            break;
                    }
                   if (Request["closePlus"] != null && Request["closePlus"] == "true")
                   {
                       this.btnClosePlus.Show();

                   }
                   else
                   {
                       this.btnClosePlus.Hide();
                   }
            }//if (!X.IsAjaxRequest)
        }
        /// <summary>
        /// Grabar información de expediente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string AuditoriaIdTmp = "";
                string stringMsg = "";
                string gridJson  = e.ExtraParams["prmValues"];
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);
                AuditoriaMonitoreo audMonAux = null;
                AuditoriaMonitoreo audMon = null;
                switch (GetSessionPage.GetSession(SessionPage.PageGestionPromoAudMon))
                {
                    case Valores.PageEvento_Modificar:
                        AuditoriaIdTmp = Request["mon_id"];
                        audMon = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));                       
                        stringMsg = "Auditoria de Monitoreo ["+ audMon.Periodo +"] modificada";
                        break;
                    case Valores.PageEvento_Nuevo:
                        AuditoriaIdTmp = Request["exa_id"];
                        if (AuditoriaIdTmp == null)
                        {
                            //Caso de crear una auditoria a partir de una nueva auditoria
                            audMonAux = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(Request["mon_root_id"]));
                            AuditoriaIdTmp = audMonAux.ExpedienteAuditoriaId;
                        }
                        audMon = AuditoriaMonitoreo.NewEditableRoot();
                        audMon.Id = System.Guid.NewGuid();
                        audMon.ExpedienteAuditoriaId = AuditoriaIdTmp;
                        stringMsg = "Nueva Auditoria de Monitoreo creada";
                        break;
                }
                            
                audMon.Periodo     = dataItem["Periodo"];
                audMon.FechaInicio = DateTime.Parse(dataItem["FechaInicio"]);
                audMon.FechaFin    = DateTime.Parse(dataItem["FechaFin"]);
                audMon.PlanAccion  = Valores.Codigo_CHAR_No;
                //En caso de ser una auditoria adicional
                if (Request["mon_root_id"] != null)
                {
                    audMon.MonitoreoIdAdd = Request["mon_root_id"];
                }
                if (Request["closePlus"] == null)
                { 
                    audMon.Save();
                }
                else
                {
                    Session[Constantes.AChildMonitoreo] = audMon;                   
                    //En caso de ser una auditoria adicional
                    //if (Request["mon_root_id"] != null)
                    //{
                    //    if (audMonAux == null)
                    //    {
                    //        audMonAux = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(Request["mon_root_id"]));
                    //    }
                    //    if (audMonAux != null)
                    //    {
                    //        audMonAux.MonitoreoIdAdd = audMon.Id.ToString();
                    //        audMonAux.Save();
                    //    }
                    //}
                }
                btnSave.Disable();
                //Metodo de  Handler = "window.parent.App.CloseNuevoExpediente();" invocado desde [~/Auditoria/admin/Monitoreo/pgAdmAM.aspx]
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.INFO,
                    Title   = Titulos.TituloAviso,
                    Message = string.Format("{0}", stringMsg),
                    Handler = "window.parent.App.CloseNuevoExpediente();"
                });
               
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

    }
}